<?php

/**
 * AREACONOCIMIENTO actions.
 *
 * @package    OPENBIBLIOSOFT
 * @subpackage AREACONOCIMIENTO
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class AREACONOCIMIENTOActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    if($this->getUser()->getAttribute('codigoUsuario') == null)
	{
		return  $this->renderText("<script type='text/javascript'> window.location = 'Entrada'; </script> ");
	}
  }
  
	public function executeListar()
	{
		$buscar = $this->getRequestParameter('Busqueda');
		$buscar = "%".$buscar."%";
		$campo = $this->getRequestParameter('Campo');
		
		$conexion = new Criteria();
		
		if($campo == 'Nombre'){ $conexion->add(AreaconocimientoPeer::NOMBRE, $buscar, Criteria::LIKE);}
		if($campo == 'Codigo'){ $conexion->add(AreaconocimientoPeer::CODIGO, $buscar, Criteria::LIKE);}
		if($campo == 'Descripcion'){ $conexion->add(AreaconocimientoPeer::DESCRIPCION, $buscar, Criteria::LIKE);}
		if($campo == 'CodigoPadre'){ $conexion->add(AreaconocimientoPeer::CODIGOAREACONOCIMIENTOPADRE, $buscar, Criteria::LIKE);}
		if($campo == 'Todos')
		{		
			$c1 = $conexion->getNewCriterion(AreaconocimientoPeer::NOMBRE, $buscar, Criteria::LIKE);
			$c2 = $conexion->getNewCriterion(AreaconocimientoPeer::CODIGO, $buscar, Criteria::LIKE);
			$c3 = $conexion->getNewCriterion(AreaconocimientoPeer::DESCRIPCION, $buscar, Criteria::LIKE);
			$c4 = $conexion->getNewCriterion(AreaconocimientoPeer::CODIGOAREACONOCIMIENTOPADRE, $buscar, Criteria::LIKE);
			$c3->addOr($c4);
			$c2->addOr($c3);
			$c1->addOr($c2);
			$conexion->add($c1);
		}
		
		$numeroAreasConocimiento = AreaconocimientoPeer::doCount($conexion);
		$conexion->setLimit($this->getRequestParameter('limit'));
		$conexion->setOffset($this->getRequestParameter('start'));
		$areasConocimiento = AreaconocimientoPeer::doSelect($conexion);
		$pos = 0;
		$nbrows=0;
		$datos;
		
		foreach ($areasConocimiento As $temporal)
		{
			$datos[$pos]['areaConocimientoCodigo']=$temporal->getCodigo();
			$datos[$pos]['areaConocimientoNombre']=$temporal->getNombre();
			$datos[$pos]['areaConocimientoDescripcion']=$temporal->getDescripcion();
			$datos[$pos]['areaConocimientoCodigoPadre']=$temporal->getCodigoareaconocimientopadre();
			$datos[$pos]['areaConocimientoNombrePadre']=$this->getAPadreNombre($temporal->getCodigoareaconocimientopadre());
			$pos++;
			$nbrows++;
		}
		
		if($nbrows>0){
			$jsonresult = json_encode($datos);
			return  $this->renderText('({"total":"'.$numeroAreasConocimiento.'","results":'.$jsonresult.'})');
		}
		else {
			return  $this->renderText('({"total":"0", "results":""})');
		}
	}
	
	public function executeListarAPadre(){
		$conexion = new Criteria();
		$numeroAreasConocimiento = AreaconocimientoPeer::doCount($conexion);
		$conexion->setLimit($this->getRequestParameter('limit'));
		$conexion->setOffset($this->getRequestParameter('start'));
		$areasConocimiento = AreaconocimientoPeer::doSelect($conexion);
		$pos = 0;
		$nbrows=0;
		$datos;
		
		foreach ($areasConocimiento As $temporal)
		{
			$datos[$pos]['areaConocimientoCodigoPadreCombo']=$temporal->getCodigo();
			$datos[$pos]['areaConocimientoNombrePadreCombo']=$temporal->getNombre();
			$pos++;
			$nbrows++;
		}
		
		if($nbrows>0){
			$jsonresult = json_encode($datos);
			return  $this->renderText('({"total":"'.$numeroAreasConocimiento.'","results":'.$jsonresult.'})');
		}
		else {
			return  $this->renderText('({"total":"0", "results":""})');
		}
	}

	public function getAPadreNombre($codigo)
	{
		$nombrePadre = '';
		if($codigo != null || $codigo != '')
		{
			$conexion = new Criteria();
			$conexion->add(AreaconocimientoPeer::CODIGO, $codigo);
			
			if($conexion)
			{
				$areasConocimiento = AreaconocimientoPeer::doSelectOne($conexion);
				$nombrePadre = $areasConocimiento->getNombre();
			}
			else
			{
				$nombrePadre = 'sin padre';
			}
		}
		else
		{
			$nombrePadre = 'sin padre';
		}
		return $nombrePadre;
	}

	public function executeGuardar()
	{
		$areaConocimiento = new Areaconocimiento();
		$areaConocimiento->setCodigo($this->getRequestParameter('Codigo'));
		$areaConocimiento->setNombre($this->getRequestParameter('Nombre'));
		$areaConocimiento->setDescripcion($this->getRequestParameter('Descripcion'));
		if($this->getRequestParameter('Padre') != '')
		{
			$areaConocimiento->setCodigoareaconocimientopadre($this->getRequestParameter('Padre'));
		}

		try
		{
			$areaConocimiento->save();
		}
		catch (Exception $excepcionBibliotecario)
		{
			return  $this->renderText("({success: false, errors: { reason: 'Exception: Hubo un problema creando el area de conocimiento: ".$this->getRequestParameter('Nombre')."'}})");
		}
		return  $this->renderText("({success: true, mensaje:'El area de conocimiento fue creada exitosamente'})");
	}

	public function executeActualizar()
	{
		$areaConocimientoCodigoViejo = $this->getRequestParameter('CodigoViejo');
		$conexion = new Criteria();
		$conexion->add(AreaconocimientoPeer::CODIGO, $areaConocimientoCodigoViejo);
		$areaConocimiento = AreaconocimientoPeer::doSelectOne($conexion);

		if($areaConocimiento)
		{
				//$areaConocimiento->setCodigo($this->getRequestParameter('Codigo'));
				$areaConocimiento->setNombre($this->getRequestParameter('Nombre'));
				$areaConocimiento->setDescripcion($this->getRequestParameter('Descripcion'));
				if($this->getRequestParameter('Padre') != '')
				{
					$areaConocimiento->setCodigoareaconocimientopadre($this->getRequestParameter('Padre'));
				}
				else
				{
					$areaConocimiento->setCodigoareaconocimientopadre(null);
				}
				
				try
				{
					$areaConocimiento->save();
				}
				catch (Exception $excepcionAreaConocimiento)
				{
					return  $this->renderText("({success: false, errors: { reason: 'Exception: Problemas al actualizar el area de conocimiento: ".$this->getRequestParameter('Nombre')."'}})");
				
				}
				return  $this->renderText("({success: true, mensaje:'El area de conocimiento fue actualizada exitosamente'})");
		} else {
			return  $this->renderText("({success: false, errors: { reason: 'No se a actualizado el area de conocimiento corecctamente'}})");
		}
	}

	public function executeEliminar()
	{
		$codigo = $this->getRequestParameter('Codigo');

		$conexion = new Criteria();
		$conexion->add(AreaconocimientoPeer::CODIGO, $codigo);
		if($conexion)
		{
			$areaConocimiento = AreaconocimientoPeer::doSelectOne($conexion);
			
			try
			{
				$areaConocimiento->delete();
			}
			catch (Exception $excepcionareaConocimiento)
			{
				return  $this->renderText("({success: false, errors: { reason: 'Exception: No se pudo eliminar el area de conocimiento'}})");
			}
		
			return  $this->renderText("({success: true, mensaje:'El area de conocimiento fue eliminada exitosamente'})");
		}
		else
		{
			return  $this->renderText("({success: false, errors: { reason: 'No se pudo eliminar el area de conocimiento'}})");
		}
	}
}
